package dao;

import java.io.BufferedReader;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
import java.util.*;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import jxl.Sheet;
import jxl.*;
import jxl.read.biff.BiffException;
/**
 */
public class XlsFile {
    /**
     */
    private String xlspath;

    /**
     * @return 
     */
    public XlsFile(String xlspath) {
        this.xlspath=xlspath;
    }
    public Vector<Vector<String> > getData() throws Exception{
        String ruta="";
        /*for(int i=0;i<xlspath.length();i++){
            if(xlspath.charAt(i)=='\\'){
               ruta+="\\\\";
            }
            else ruta+=xlspath.charAt(i);//ruta=xlspath.charAt(i)+ruta;
        }*/
        for(int i=xlspath.length()-1;i>=0;i--){

            if(xlspath.charAt(i)=='\\'){
                break;
            }
            ruta=xlspath.charAt(i)+ruta;
        }

        System.out.println(xlspath);
        //ruta=xlspath.replaceAll("\\", "\\\\");
        System.out.println(ruta);
        Workbook w = Workbook.getWorkbook(new  File(ruta));
        // Obtenemos el archivo XLS
        //System.out.println(ruta);
        Sheet s = w.getSheet(0);
        Vector<Vector<String> > v=new Vector<Vector<String>>();
        // Otenemos la primera hoja
        String asignatura="";
        Cell a;System.out.println(s.getColumns()+" "+s.getRows());
        int filas=s.getRows(),columnas=s.getColumns();
        boolean b=false;
        int i=0;
        for( ; i< filas;i++){
           //for(int j=0;j<columnas;j++){
                a=s.getCell(0,i);
                if(b)break;
                String contenido=a.getContents();
                if(contenido.indexOf("ASIGNATURA")!=-1){
                    int n=contenido.indexOf(":");
                    asignatura=contenido.substring(n+2);
                }
                if(contenido.indexOf("Nro.")!=-1){
                  // next=true;
                    b=true;
                }
                //System.out.print(a.getContents()+" ");
            //}
            //System.out.println();
        }
        //i++;
        String nombre,apellidos,cui,ape1,ape2;
        for(int j=i;j<filas;j++){
            //for(int k=1;k<columnas;k++){
              //nombre=(s.getCell(3,j)).getContents();
              apellidos=(s.getCell(2,j)).getContents();
              int del=apellidos.indexOf("/"),coma=apellidos.indexOf(",");
              ape1=apellidos.substring(0,del);
              ape2=apellidos.substring(del+1,coma);
              nombre=apellidos.substring(coma+2);

              cui=(s.getCell(1, j)).getContents();
              Vector<String> atributos=new Vector<String>();

              
              atributos.add("'"+nombre+"'");
              atributos.add("'"+ape1+"'");
              atributos.add("'"+ape2+"'");
              atributos.add(cui);
              //System.out.print(nombre+" "+ape1+" "+ape2+" "+cui);
            //}
          // System.out.println();
              v.add(atributos);
        }
        //System.out.println("asignatura "+asignatura+" "+i);
        return v;
    }
    /*public Vector<Vector<String> > getData() throws FileNotFoundException, IOException{

        Vector<Vector<String> > vs = new Vector<Vector<String> >();
        BufferedReader bfr = new BufferedReader(new FileReader(xlspath));
        String linea;
        String asig="ASIGNATURA : ",gr="GRUPO : ",fec="FECHA : ";
        String universidad="",escuela="",asignatura="",grupo="",fecha="";
        do{
            linea=bfr.readLine();
            if(linea==null)break;

                    String aux="";
                    Vector<String> datos=new Vector<String>();
                    for(int i=0;i<linea.length();i++){
                       if(Character.isLetterOrDigit(linea.charAt(i)) || linea.charAt(i)==',' || linea.charAt(i)=='/' || linea.charAt(i)=='\t' || linea.charAt(i)==' ' || linea.charAt(i)==':'){
                           if(linea.charAt(i)=='\t')aux+=" ";
                           else aux+=linea.charAt(i);
                       }

                    }

                    if(aux.indexOf("UNIVERSIDAD")!=-1)universidad=aux;
                    else if(aux.indexOf("ESCUELA")!=-1){escuela=aux;}
                    else if(aux.indexOf("ALUMNOS")!=-1);
                    else if(aux.indexOf("ASIGNATURA : ")!=-1){ asignatura=aux.substring(aux.indexOf(asig)+asig.length());}
                    else if(aux.indexOf(gr)!=-1){ grupo=aux.substring(aux.indexOf(gr)+gr.length());}
                    else if(aux.indexOf(fec)!=-1){ fecha=aux.substring(aux.indexOf(fec)+fec.length());}
                    else if(aux.indexOf("NOTA IMPORTANTE")!=-1);
                    else {
                        Pattern p=Pattern.compile("[0-9]");
                        Matcher m=p.matcher(aux);

                        if(m.find()){
                           aux+=" ";
                           String apellido1="",apellido2="",nombre;

                           aux=aux.substring(aux.indexOf(" ")+1);
                           //codigo
                           datos.add(aux.substring(0,aux.indexOf(" ")));
                           aux=aux.substring(aux.indexOf(" ")+1);
                           int c=aux.indexOf("/"), coma=aux.indexOf(",");

                           //primer apellido
                           apellido1=aux.substring(0,c);
                           //datos.add(aux.substring(0,c));
                           
                           //segundo apellido
                           apellido2=aux.substring(c+1,coma);
                           //datos.add(aux.substring(c+1,coma));
                           aux=aux.substring(coma+2);
                           aux+=" ";
                           String array[]=aux.split("\\s+");
                           //nombres;
                           String nombres="";
                           for(String ss:array){
                               nombres+=ss+=" ";
                               //datos.add(ss);
                           }
                           datos.add(nombres);
                           //agregamos apellido
                           datos.add(apellido1+" "+apellido2);
                           //datos.add(apellido1);
                           //datos.add(apellido2);

                        }
                    }

                    if(datos.size()>0)vs.add(datos);

        }while(true);

        //universidad, curso, ciclo
       // Vector<String> generales=new Vector<String>();
        //generales.add(universidad);generales.add(escuela);generales.add(asignatura);generales.add(grupo);generales.add(fecha);
       // vs.add(generales);

        return vs;
    }*/

    /**
     * @return 
     */
    public String getXlspath() {
        return this.xlspath;
    }

    /**
     * @param xlspath 
     */
    public void setXlspath(String xlspath) {
        this.xlspath=xlspath;
    }
}

